﻿<phone:PhoneApplicationPage
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 	
    xmlns:ic="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions" 
    xmlns:im="clr-namespace:Microsoft.Expression.Interactivity.Media;assembly=Microsoft.Expression.Interactions"
    xmlns:il="clr-namespace:Microsoft.Expression.Interactivity.Layout;assembly=Microsoft.Expression.Interactions"
    xmlns:nTriggers="clr-namespace:nRoute.Behaviors.Triggers;assembly=nRoute.Toolkit" 
    xmlns:nBehaviors="clr-namespace:nRoute.Behaviors;assembly=nRoute.Toolkit" 
	xmlns:nComponents="clr-namespace:nRoute.Components;assembly=nRoute.Toolkit" 
    xmlns:local="clr-namespace:nRoute.Samples.SquareAway.Behaviors" 
    xmlns:System="clr-namespace:System;assembly=mscorlib" 
    x:Class="nRoute.Samples.SquareAway.MainPage"	
    SupportedOrientations="Portrait" Orientation="Portrait"
    mc:Ignorable="d" d:DesignHeight="800" d:DesignWidth="480"
    shell:SystemTray.IsVisible="True">
	
    <phone:PhoneApplicationPage.Resources>
    	
    	<!-- STATIC COMMAND RELAYS - FOR USE IN DATA TEMPLATES -->
    	<nComponents:CommandRelay x:Key="HighlightCommandRelay" />
    	<nComponents:CommandRelay x:Key="UnHighlightCommandRelay" />
    	<nComponents:CommandRelay x:Key="HideCommandRelay" />
		
		<!-- VALUE CONVERTER RELAY, DEFINED IN THE CODE-BEHIND -->
    	<nComponents:ValueConverterRelay x:Key="SquareColorConverterRelay" />
    	<nComponents:ValueConverterRelay x:Key="StartedStateConverterRelay" />
		
		<!-- BRUSHES -->		
    	<RadialGradientBrush x:Key="SquareFlareBkgBrush" RadiusY="0.689" RadiusX="1.199" Center="0.445,0.187" GradientOrigin="0.445,0.187">
    		<GradientStop Color="#C6FFFFFF" Offset="0.081"/>
    		<GradientStop Color="Transparent" Offset="0.516"/>
    		<GradientStop Color="#19FFFFFF" Offset="0.459"/>
    	</RadialGradientBrush>
		
    	<RadialGradientBrush x:Key="SquarePlasticBkgBrush" GradientOrigin="0.505,1.08" RadiusX="-2.112" RadiusY="-1.125" Center="0.505,1.08">
    		<RadialGradientBrush.RelativeTransform>
    			<CompositeTransform CenterY="1.08" CenterX="0.505" Rotation="-179.294" TranslateX="-0.005" TranslateY="-0.959"/>
    		</RadialGradientBrush.RelativeTransform>
    		<GradientStop Color="#25FFFFFF"/>
    		<GradientStop Color="#AC000000" Offset="0.817"/>
    		<GradientStop Color="#5AFFFFFF" Offset="0.26"/>
    		<GradientStop Color="#400F0F0F" Offset="0.447"/>
    	</RadialGradientBrush>
		
    	<LinearGradientBrush x:Key="SquarePlasticBorderBrush" EndPoint="0.5,1" StartPoint="0.5,0">
    		<GradientStop Color="#98000000" Offset="1"/>
    		<GradientStop Color="#33000000"/>
    	</LinearGradientBrush>
		
		<!-- SQUARE's CANVAS PANEL TEMPLATE -->
    	<ItemsPanelTemplate x:Key="SquaresPanelTemplate">
    		<Canvas CacheMode="BitmapCache">
    			<i:Interaction.Behaviors>
    				<il:FluidMoveBehavior AppliesTo="Children" Duration="0:0:0.65">
    					<il:FluidMoveBehavior.EaseY>
    						<PowerEase EasingMode="EaseOut" Power="7"/>
    					</il:FluidMoveBehavior.EaseY>
    					<il:FluidMoveBehavior.EaseX>
    						<PowerEase EasingMode="EaseIn" Power="9"/>
    					</il:FluidMoveBehavior.EaseX>
    				</il:FluidMoveBehavior>
    			</i:Interaction.Behaviors>
    		</Canvas>
    	</ItemsPanelTemplate>
		
    	<DataTemplate x:Key="SquareTemplate">
    		<Canvas Background="Transparent" Height="62" Margin="8,0,0,0" Width="62" d:DesignWidth="62" CacheMode="BitmapCache" 
    			d:DesignHeight="62">
    			
    			<i:Interaction.Behaviors>
    				<local:SetContainerPositionBehavior RowBinding="{Binding Row, Mode=OneWay}" ColumnBinding="{Binding Column, Mode=OneWay}" />
    			</i:Interaction.Behaviors>
								
    			<i:Interaction.Triggers>
					
    				<!-- INPUT -->
    				<i:EventTrigger EventName="MouseEnter">
    					<nBehaviors:ExecuteCommandAction Command="{StaticResource HighlightCommandRelay}" ParameterBinding="{Binding}"/>
    				</i:EventTrigger>
    				<i:EventTrigger EventName="MouseLeave">
    					<nBehaviors:ExecuteCommandAction Command="{StaticResource UnHighlightCommandRelay}" ParameterBinding="{Binding}"/>
    				</i:EventTrigger>
    				<i:EventTrigger EventName="MouseLeftButtonUp">
    					<nBehaviors:ExecuteCommandAction Command="{StaticResource HideCommandRelay}" ParameterBinding="{Binding}"/>
    				</i:EventTrigger>
					
    				<!-- ACTIONS -->
    				<nTriggers:ValueMatchTrigger SourceBinding="{Binding State, Mode=OneWay}" Value="UnInitialized">
    					<nBehaviors:SetPropertyAction PropertyName="Visibility" Value="Visible" />
    					<!--<im:ControlStoryboardAction Storyboard="{StaticResource UnHighlightStoryboard}"/>-->						
    					<nBehaviors:SetPropertyAction PropertyName="Opacity" Value="1" />
    				</nTriggers:ValueMatchTrigger>
    				<nTriggers:ValueMatchTrigger SourceBinding="{Binding State, Mode=OneWay}" Value="Highlighted">
    					<!--<im:ControlStoryboardAction Storyboard="{StaticResource HighlightStoryboard}"/>-->						
    					<nBehaviors:SetPropertyAction PropertyName="Opacity" Value="0.8" />
    				</nTriggers:ValueMatchTrigger>
    				<nTriggers:ValueMatchTrigger SourceBinding="{Binding State, Mode=OneWay}" Value="Initialized">
    					<!--<im:ControlStoryboardAction Storyboard="{StaticResource UnHighlightStoryboard}"/>-->						
    					<nBehaviors:SetPropertyAction PropertyName="Opacity" Value="1" />
    				</nTriggers:ValueMatchTrigger>
    				<nTriggers:ValueMatchTrigger SourceBinding="{Binding State, Mode=OneWay}" Value="Hidden">
    					<nBehaviors:SetPropertyAction PropertyName="Visibility" Value="Collapsed" />
    				</nTriggers:ValueMatchTrigger>
					
    			</i:Interaction.Triggers>
				
    			<Path Data="M0,0 L62,0 L62,62 L0,62 z" Stretch="Fill" StrokeThickness="0" Height="62" UseLayoutRounding="False"
					Fill="{Binding Color, Converter={StaticResource SquareColorConverterRelay}, Mode=OneWay}" 
					IsHitTestVisible="False"  Width="62"/>
    			<Path Data="M0,0 L62,0 L62,62 L0,62 z" IsHitTestVisible="False" Margin="0" Stretch="Fill" StrokeThickness="0" 
					Height="62" UseLayoutRounding="False" Width="62" Fill="{StaticResource SquareFlareBkgBrush}" />
    			<Path Data="M0.75,0.75 L61.25,0.75 L61.25,61.25 L0.75,61.25 z" IsHitTestVisible="False" Stretch="Fill" Width="62" 
					StrokeThickness="1.5" Height="62" UseLayoutRounding="False" Fill="{StaticResource SquarePlasticBkgBrush}" 
					Stroke="{StaticResource SquarePlasticBorderBrush}" />				
    		</Canvas>
    	</DataTemplate>
		
    </phone:PhoneApplicationPage.Resources>
	
	<i:Interaction.Triggers>
		<i:EventTrigger EventName="BackKeyPress">
			<nBehaviors:ExecuteCommandAction CommandBinding="{Binding TogglePlayStateCommand}"
			 	IsEnabledBinding="{Binding PlayState, Converter={StaticResource StartedStateConverterRelay}}"/>
			<local:PlayStateCancelHandledAction PlayStateBinding="{Binding PlayState}"/>				
		</i:EventTrigger>
	</i:Interaction.Triggers>

	<phone:PhoneApplicationPage.FontFamily>
		<StaticResource ResourceKey="PhoneFontFamilyNormal"/>
	</phone:PhoneApplicationPage.FontFamily>
	<phone:PhoneApplicationPage.FontSize>
		<StaticResource ResourceKey="PhoneFontSizeNormal"/>
	</phone:PhoneApplicationPage.FontSize>
	<phone:PhoneApplicationPage.Foreground>
		<StaticResource ResourceKey="PhoneForegroundBrush"/>
	</phone:PhoneApplicationPage.Foreground>

	<i:Interaction.Behaviors>
		
		<!-- ATTACH VIEWMODEL -->
		<nBehaviors:BridgeViewModelBehavior/>
		
		<!-- BRIDGE STATIC COMMAND RELAYS TO OUR VIEWMODEL -->
		<nBehaviors:BridgeCommandBehavior CommandRelay="{StaticResource HighlightCommandRelay}"
			CommandSourceBinding="{Binding HighlightCommand}"/>
		<nBehaviors:BridgeCommandBehavior CommandRelay="{StaticResource UnHighlightCommandRelay}"
			CommandSourceBinding="{Binding UnHighlightCommand}"/>
		<nBehaviors:BridgeCommandBehavior CommandRelay="{StaticResource HideCommandRelay}"
			CommandSourceBinding="{Binding HideCommand}"/>
			
    </i:Interaction.Behaviors>

    <Grid x:Name="LayoutRoot" Background="{StaticResource PhoneBackgroundBrush}" Margin="0,-22,0,0">
        <VisualStateManager.VisualStateGroups>
        	<VisualStateGroup x:Name="PlayStateGroup">
        		<VisualStateGroup.Transitions>
        			<VisualTransition GeneratedDuration="0:0:0.5">
        				<VisualTransition.GeneratedEasingFunction>
        					<CircleEase EasingMode="EaseInOut"/>
        				</VisualTransition.GeneratedEasingFunction>
        			</VisualTransition>
        			<VisualTransition From="NonPlayingState" GeneratedDuration="0:0:0.5" To="PlayingState">
        				<VisualTransition.GeneratedEasingFunction>
        					<QuinticEase EasingMode="EaseIn"/>
        				</VisualTransition.GeneratedEasingFunction>
        				<Storyboard>
        					<DoubleAnimation Duration="0:0:0.5" From="1" To="2.5" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" Storyboard.TargetName="NonPlayingPanel"/>
        					<DoubleAnimation Duration="0:0:0.5" From="1" To="2.5" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="NonPlayingPanel"/>
        					<DoubleAnimation Duration="0:0:0.5" From="1" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="NonPlayingPanel"/>
        					<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="NonPlayingPanel">
        						<DiscreteObjectKeyFrame KeyTime="0:0:0.5">
        							<DiscreteObjectKeyFrame.Value>
        								<Visibility>Collapsed</Visibility>
        							</DiscreteObjectKeyFrame.Value>
        						</DiscreteObjectKeyFrame>
        					</ObjectAnimationUsingKeyFrames>
        					<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.IsHitTestVisible)" Storyboard.TargetName="NonPlayingPanel">
        						<DiscreteObjectKeyFrame KeyTime="0">
        							<DiscreteObjectKeyFrame.Value>
        								<System:Boolean>False</System:Boolean>
        							</DiscreteObjectKeyFrame.Value>
        						</DiscreteObjectKeyFrame>
        						<DiscreteObjectKeyFrame KeyTime="0:0:0.5">
        							<DiscreteObjectKeyFrame.Value>
        								<System:Boolean>True</System:Boolean>
        							</DiscreteObjectKeyFrame.Value>
        						</DiscreteObjectKeyFrame>
        					</ObjectAnimationUsingKeyFrames>
        					<DoubleAnimation Duration="0:0:0.5" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="grid">
        						<DoubleAnimation.EasingFunction>
        							<QuinticEase EasingMode="EaseOut"/>
        						</DoubleAnimation.EasingFunction>
        					</DoubleAnimation>
        				</Storyboard>
        			</VisualTransition>
        			<VisualTransition From="PlayingState" GeneratedDuration="0:0:0.3" To="NonPlayingState">
        				<VisualTransition.GeneratedEasingFunction>
        					<CircleEase EasingMode="EaseOut"/>
        				</VisualTransition.GeneratedEasingFunction>
        				<Storyboard>
        					<DoubleAnimation Duration="0:0:0.4" From="2.5" To="1" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" Storyboard.TargetName="NonPlayingPanel"/>
        					<DoubleAnimation Duration="0:0:0.4" From="2.5" To="1" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="NonPlayingPanel"/>
        					<DoubleAnimation Duration="0:0:0.4" From="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="grid"/>
        					<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="NonPlayingPanel">
        						<DiscreteObjectKeyFrame KeyTime="0">
        							<DiscreteObjectKeyFrame.Value>
        								<Visibility>Visible</Visibility>
        							</DiscreteObjectKeyFrame.Value>
        						</DiscreteObjectKeyFrame>
        					</ObjectAnimationUsingKeyFrames>
        					<DoubleAnimation Duration="0:0:0.4" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="NonPlayingPanel"/>
        					<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.IsHitTestVisible)" Storyboard.TargetName="NonPlayingPanel">
        						<DiscreteObjectKeyFrame KeyTime="0">
        							<DiscreteObjectKeyFrame.Value>
        								<System:Boolean>True</System:Boolean>
        							</DiscreteObjectKeyFrame.Value>
        						</DiscreteObjectKeyFrame>
        					</ObjectAnimationUsingKeyFrames>
        				</Storyboard>
        			</VisualTransition>
        		</VisualStateGroup.Transitions>
        		<VisualState x:Name="NonPlayingState">
        			<Storyboard>
        				<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" Storyboard.TargetName="NonPlayingPanel" d:IsOptimized="True"/>
        				<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="NonPlayingPanel" d:IsOptimized="True"/>
        				<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="NonPlayingPanel" d:IsOptimized="True"/>
        				<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="NonPlayingPanel">
        					<DiscreteObjectKeyFrame KeyTime="0">
        						<DiscreteObjectKeyFrame.Value>
        							<Visibility>Visible</Visibility>
        						</DiscreteObjectKeyFrame.Value>
        					</DiscreteObjectKeyFrame>
        				</ObjectAnimationUsingKeyFrames>
        			</Storyboard>
        		</VisualState>
        		<VisualState x:Name="PlayingState">
        			<Storyboard>
        				<DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="NonPlayingPanel" d:IsOptimized="True"/>
        				<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="NonPlayingPanel">
        					<DiscreteObjectKeyFrame KeyTime="0">
        						<DiscreteObjectKeyFrame.Value>
        							<Visibility>Collapsed</Visibility>
        						</DiscreteObjectKeyFrame.Value>
        					</DiscreteObjectKeyFrame>
        				</ObjectAnimationUsingKeyFrames>
        				<DoubleAnimation Duration="0" To="2.5" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" Storyboard.TargetName="NonPlayingPanel" d:IsOptimized="True"/>
        				<DoubleAnimation Duration="0" To="2.5" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="NonPlayingPanel" d:IsOptimized="True"/>
        				<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="grid" d:IsOptimized="True"/>
        			</Storyboard>
        		</VisualState>
        	</VisualStateGroup>
		</VisualStateManager.VisualStateGroups>
		
		<VisualStateManager.CustomVisualStateManager>
			<ic:ExtendedVisualStateManager/>
		</VisualStateManager.CustomVisualStateManager>		
	
		<i:Interaction.Triggers>
			
			<!-- PLAY STATES RELATED STATES -->
			<nTriggers:ValueSwitchTrigger SourceBinding="{Binding PlayState}">
				<ic:GoToStateAction nTriggers:ValueSwitchTrigger.CaseValue="Paused" StateName="NonPlayingState"/>
				<ic:GoToStateAction nTriggers:ValueSwitchTrigger.CaseValue="Completed" StateName="NonPlayingState"/>
				<ic:GoToStateAction nTriggers:ValueSwitchTrigger.CaseValue="Started" StateName="PlayingState"/>
			</nTriggers:ValueSwitchTrigger>
			
			<!-- THIS ENSURES WE START IN NON-PLAYING STATE AND STATE CHANGE ANIMATIONS PLAY -->
			<i:EventTrigger>
				<ic:GoToStateAction StateName="NonPlayingState"/>
			</i:EventTrigger>

            <!-- PLAY SOUND -->
            <nTriggers:ValueChangedTrigger SourceBinding="{Binding Score}">
				<!--<local:PlayMediaElementAction TargetName="HideSoundMedia"/>-->
                <local:PlayAudioAction AudioResourceUrl="Resources/sound.wav" />                
			</nTriggers:ValueChangedTrigger>
			
		</i:Interaction.Triggers>
		
		<!-- PLAYING PANEL -->
	    <Grid x:Name="PlayingPanel">
	        <Grid.RowDefinitions>
	        	<RowDefinition Height="130"/>
	        	<RowDefinition/>
	        </Grid.RowDefinitions>

	        <!-- HEADER with SCORES INFO -->
	        <Grid x:Name="grid" Grid.Row="0" Opacity="0">
	        	<TextBlock Text="YOUR SCORE" Style="{StaticResource PhoneTextNormalStyle}" Margin="20,25,12,0" 
	        		HorizontalAlignment="Left" VerticalAlignment="Top" Foreground="{StaticResource PhoneForegroundBrush}"
	        		TextOptions.TextHintingMode="Animated"/>
	        	<TextBlock Text="{Binding Score, Mode=OneWay}" Style="{StaticResource PhoneTextTitle1Style}" Margin="20,34,0,0" 
	        		Foreground="{StaticResource PhoneForegroundBrush}" TextOptions.TextHintingMode="Animated"/>
	        </Grid>

	    	<ItemsControl ItemsSource="{Binding Squares, Mode=OneWay}" Grid.Row="1" 
	    		ItemsPanel="{StaticResource SquaresPanelTemplate}" ItemTemplate="{StaticResource SquareTemplate}"/>    
	        
	    </Grid>
		
		<!-- NON-PLAYING PANEL -->
		<Grid x:Name="NonPlayingPanel" RenderTransformOrigin="0.5,0.5">
			
			<Grid.RowDefinitions>
				<RowDefinition Height="130"/>
				<RowDefinition/>
			</Grid.RowDefinitions>
			
			<Grid.RenderTransform>
				<CompositeTransform/>
			</Grid.RenderTransform>
			
			<Rectangle Grid.RowSpan="3" Fill="{StaticResource PhoneContrastForegroundBrush}" Opacity="0.5" />

			<!-- HEADER -->
			<Grid Grid.Row="0" x:Name="TitleGrid">
				<TextBlock Text="nROUTE PRESENTS" Style="{StaticResource PhoneTextNormalStyle}" HorizontalAlignment="Left" 
					VerticalAlignment="Top" Margin="20,25,0,0" Foreground="{StaticResource PhoneForegroundBrush}"
					TextOptions.TextHintingMode="Animated"/>
				<TextBlock Style="{StaticResource PhoneTextTitle1Style}" Margin="14,34,0,0" FontSize="66" 
					Foreground="{StaticResource PhoneForegroundBrush}" TextOptions.TextHintingMode="Animated" Text="SQUARE AWAY" HorizontalAlignment="Left"/>
			</Grid>
			
			<!-- BIG PLAY BUTTON -->
			<Border x:Name="border" HorizontalAlignment="Center" Height="350" Grid.Row="1" VerticalAlignment="Top" Width="350" 
				Background="Transparent" Margin="0,65,0,0" BorderThickness="4" 
				BorderBrush="{StaticResource PhoneContrastBackgroundBrush}" RenderTransformOrigin="0.5,0.5">
				<i:Interaction.Triggers>
					<i:EventTrigger EventName="MouseLeftButtonUp">
						<nBehaviors:ExecuteCommandAction CommandBinding="{Binding TogglePlayStateCommand}"/>
					</i:EventTrigger>
				</i:Interaction.Triggers>
				<Path Data="M95,288 L97.000427,70 L309.492,175.66881 z" Stretch="Fill" StrokeThickness="4" UseLayoutRounding="False"
					IsHitTestVisible="False" Fill="{StaticResource PhoneContrastBackgroundBrush}" Height="217" VerticalAlignment="Center" 
					HorizontalAlignment="Center" Width="213" />
			</Border>
			
			<!-- BOTTOM MESSAGE TEXT -->
			<TextBlock Margin="14,0,14,8" Grid.Row="1" TextWrapping="Wrap" Text="{Binding Message}" VerticalAlignment="Bottom" 
				Foreground="{StaticResource PhoneForegroundBrush}" FontFamily="Segoe WP Light" FontSize="48" LineHeight="10"
				TextOptions.TextHintingMode="Animated" IsHitTestVisible="False"/>
				
		</Grid>
				
        <!-- Sound from http://www.pacdv.com/sounds/interface_sounds-3.html
		<MediaElement x:Name="HideSoundMedia" HorizontalAlignment="Left" VerticalAlignment="Top" Visibility="Collapsed"
			Source="Resources/sound.wma" Volume="1" AutoPlay="False" Height="0" Width="0" IsHitTestVisible="False"/>-->
	
	</Grid>

</phone:PhoneApplicationPage>